package org.lanqiao.tjut.action;

import java.util.List;

import org.lanqiao.tjut.bean.TBAdminBean;
import org.lanqiao.tjut.service.ServiceFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

/*
 * 该注解表示这是一个控制层的类，
 * springmvc框架会把添加@Controller注解的类，
 * 作为类似于servlet控制层的类进行扫描解析处理
 */
@Controller
// @RequestMapping("/amdin") // 需要jsp页面中请求的action连接中也需要加上该路径
public class AdminInfoAction {
	/*
	 * 该注解指定了request请求的对象的url路径， 在springmvc框架中，request请求的对象是方法；
	 * 在servlet框架中，request请求的对象是servlet类；
	 * 这样，在springmvc框架中，一个类可以响应若干个request请求处理；
	 */
	// @RequestMapping("/doAdminLoginAction.do")
	@RequestMapping("/doAdminLoginAction")
	public String doAdminLogin(TBAdminBean adminB) {
		// 调用service层进行管理员登录业务逻辑处理
		// 获取登录用户信息
		List<TBAdminBean> lstAdmins = ServiceFactory.getUserLoginServiceInstance().getUserLoginInfo(adminB);
		// 跳转到登录成功的页面,页面跳转之后的代码不会再被执行
		// 判定是否登录成功
		if (lstAdmins != null && lstAdmins.size() > 0) {
			// 登录成功
			// 跳转到指定名的显示视图(需要剃掉配置文件中指定的前缀和后缀)
			return ("logined");
		} else {
			// 登录失败
			return ("../../login");
		}
	}

	@RequestMapping("/doAdminLoginAction2")
	public ModelAndView doAdminLogin2(TBAdminBean adminB) {
		// 调用service层进行管理员登录业务逻辑处理
		// 获取登录用户信息
		List<TBAdminBean> lstAdmins = ServiceFactory.getUserLoginServiceInstance().getUserLoginInfo(adminB);
		/*
		 * modelAndview 从后台向前台进行传值（视图、数据model） 是request级别的传参
		 */

		// 跳转到登录成功的页面,页面跳转之后的代码不会再被执行
		ModelAndView mav = new ModelAndView();
		// 设置mav跳转显示的视图名
		mav.setViewName("../../login");

		// 判定是否登录成功
		if (lstAdmins != null && lstAdmins.size() > 0) {
			// 登录成功
			// 将登录成功之后用户信息缓存到mav中，并传递给前台页面
			mav.addObject("loginedAdmin", lstAdmins.get(0));
			System.out.println("登录用户：" + lstAdmins.get(0).getAdmins_name());
			// 跳转到指定名的显示视图(需要剃掉配置文件中指定的前缀和后缀)
			mav.setViewName("logined");
		}
		return mav;
	}

	/*
	 * 1、使用pojo类传参
	 * 使用pojo类将前台页面的值传递给后台实体类，
	 * 只要求实体类的属性名和前台表单的name属性的值保持一致即可
	 */
	@RequestMapping("/doAdminLoginAction3")
	public String doAdminLogin3(TBAdminBean adminB) {
		// 调用service层进行管理员登录业务逻辑处理
		// 获取登录用户信息
		List<TBAdminBean> lstAdmins = ServiceFactory.getUserLoginServiceInstance().getUserLoginInfo(adminB);
		// 跳转到登录成功的页面,页面跳转之后的代码不会再被执行
		// 判定是否登录成功
		if (lstAdmins != null && lstAdmins.size() > 0) {
			// 登录成功
			// 跳转到指定名的显示视图(需要剃掉配置文件中指定的前缀和后缀)
			return ("logined");
		} else {
			// 登录失败
			return ("../../login");
		}
	}
	/*
	 * 1、使用普通的变量进行传参
	 * 使用pojo类将前台页面的值传递给后台实体类，
	 * 只要求实体类的属性名和前台表单的name属性的值保持一致即可
	 */
	@RequestMapping("/doAdminLoginAction4")
	public String doAdminLogin4(String admins_name,String admins_psw) {
		
		System.out.println("登录用户名："+admins_name);
		// 调用service层进行管理员登录业务逻辑处理
		TBAdminBean adminB = new TBAdminBean();
		adminB.setAdmins_name(admins_name);
		adminB.setAdmins_psw(admins_psw);
		// 获取登录用户信息
		List<TBAdminBean> lstAdmins = ServiceFactory.getUserLoginServiceInstance().getUserLoginInfo(adminB);
		// 跳转到登录成功的页面,页面跳转之后的代码不会再被执行
		// 判定是否登录成功
		if (lstAdmins != null && lstAdmins.size() > 0) {
			// 登录成功
			// 跳转到指定名的显示视图(需要剃掉配置文件中指定的前缀和后缀)
			return ("logined");
		} else {
			// 登录失败
			return ("../../login");
		}
	}
	
	/*
	 * 1、使用普通的变量进行传参
	 * 使用pojo类将前台页面的值传递给后台实体类，
	 * 只要求实体类的属性名和前台表单的name属性的值保持一致即可
	 */
	@RequestMapping("/doAdminLoginAction5")
	public String doAdminLogin5(@RequestParam(name="admins_name")String adminName,@RequestParam(name="admins_psw")String adminPsw) {
		
		System.out.println("登录用户名："+adminName);
		// 调用service层进行管理员登录业务逻辑处理
		TBAdminBean adminB = new TBAdminBean();
		adminB.setAdmins_name(adminName);
		adminB.setAdmins_psw(adminPsw);
		// 获取登录用户信息
		List<TBAdminBean> lstAdmins = ServiceFactory.getUserLoginServiceInstance().getUserLoginInfo(adminB);
		// 跳转到登录成功的页面,页面跳转之后的代码不会再被执行
		// 判定是否登录成功
		if (lstAdmins != null && lstAdmins.size() > 0) {
			// 登录成功
			// 跳转到指定名的显示视图(需要剃掉配置文件中指定的前缀和后缀)
			return ("logined");
		} else {
			// 登录失败
			return ("../../login");
		}
	}
}
